package com.aosiding.yygh.msm.controller;

import com.aosiding.yygh.common.result.Result;
import com.aosiding.yygh.msm.service.MsmService;
import com.aosiding.yygh.msm.utils.RandomUtil;
import com.sun.org.apache.regexp.internal.RE;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("api/msm")
public class MsmApiController {

    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

//    //发送腾讯手机验证码1
//    @PostMapping("send/{phone}")
//    public Result sendMsm(@PathVariable String phone) throws TencentCloudSDKException {
//        String code = redisTemplate.opsForValue().get(phone);
//        if (!StringUtils.isEmpty(code)){
//            return Result.ok();
//        }
//        code = RandomUtil.getSixBitRandom();
//        boolean isSend = msmService.send(code,phone);
//        if(isSend) {
//            redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
//            return Result.ok();
//        } else {
//            return Result.fail().message("发送短信失败");
//        }
//    }

    //发送腾讯手机验证码2
//    @PostMapping("send/{phone}")
//    public Result sendMsm(@PathVariable String phone) throws TencentCloudSDKException {
//        String code = redisTemplate.opsForValue().get(phone);
//        if (!StringUtils.isEmpty(code)){
//            return Result.ok();
//        }
//        code = RandomUtil.getSixBitRandom();
//        boolean isSend = msmService.send(phone,code);
//        if(isSend) {
//            redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
//            return Result.ok();
//        } else {
//            return Result.fail().message("发送短信失败");
//        }
//    }

//    //发送邮箱验证码1    这里参数还是写为phone，为了适配前端(发送简单邮件)
//    @PostMapping("send/{phone}")
//    public Result sendCode(@PathVariable String phone,HttpSession httpSession){
//
//        //调用service方法，通过整合短信服务进行发送
//        boolean isSend = msmService.sendemail(phone,httpSession);
//        //生成验证码放到redis里面，设置有效时间
//        if(isSend) {
//            return Result.ok();
//        } else {
//            return Result.fail().message("发送邮箱验证失败");
//        }
//    }

    //发送邮箱验证码2    这里参数还是写为phone，为了适配前端(发送非简单邮件)
    @PostMapping("send/{phone}")
    public Result sendCode(@PathVariable String phone){

        //调用service方法，通过整合短信服务进行发送
        boolean isSend = msmService.sendemail(phone);
        //生成验证码放到redis里面，设置有效时间
        if(isSend) {
            return Result.ok();
        } else {
            return Result.fail().message("发送邮箱验证失败");
        }
    }
    //发送阿里云手机验证码
//    @GetMapping("send/{phone}")
//    public Result sendCode(@PathVariable String phone) {
//        //从redis获取验证码，如果获取获取到，返回ok
//        // key 手机号  value 验证码
//        String code = redisTemplate.opsForValue().get(phone);
//        if(!StringUtils.isEmpty(code)) {
//            return Result.ok();
//        }
//        //如果从redis获取不到，
//        // 生成验证码，
//        code = RandomUtil.getSixBitRandom();
//        //调用service方法，通过整合短信服务进行发送
//        boolean isSend = msmService.send(phone,code);
//        //生成验证码放到redis里面，设置有效时间
//        if(isSend) {
//            redisTemplate.opsForValue().set(phone,code,2, TimeUnit.MINUTES);
//            return Result.ok();
//        } else {
//            return Result.fail().message("发送短信失败");
//        }
//    }

}
